package com.lmaos.basetools.authority;

import java.util.Collection;
import java.util.List;
import java.util.Set;
/**
 * 
 * @author lmaos
 *
 * <p>作者：张星宇</p>
 * <p>时间：2017年6月1日 下午11:20:24</p>
 * <p>说明:用户管理		</p>
 *
 */
public interface UserMg<UB> {
	/**
	 * 说明：获取权限管理对象		<br>
	 * 时间：2017年6月1日 下午11:20:40
	 *
	 * @return
	 */
	public AuthorityMg getAuthorityMg();
	/**
	 * 说明：添加用户		<br>
	 * 时间：2017年6月1日 下午11:20:48
	 *
	 * @param user
	 */
	public void addUserCache(User<UB> user);
	/**
	 * 说明：添加一群用户		<br>
	 * 时间：2017年6月1日 下午11:20:55
	 *
	 * @param user
	 */
	public void addUserCaches(Collection<User<UB>> users);
	/**
	 * 说明：获得用户		<br>
	 * 时间：2017年6月1日 下午11:21:06
	 *
	 * @param username
	 * @return
	 */
	public User<UB> getUserCache(String username);
	/**
	 * 说明：通过用户角色key获得一群用户,当不存在则返回空集合		<br>
	 * 时间：2017年6月1日 下午11:21:14
	 *
	 * @param userRoleKey
	 * @return
	 */
	public List<User<UB>> getUsersByRoleKey(String userRoleKey);
	/**
	 * 说明：获得所有角色key		<br>
	 * 时间：2017年6月1日 下午11:21:51
	 *
	 * @return
	 */
	public Set<String> getUserRoleKeys();
	/**
	 * 说明：获得所有用户对象		<br>
	 * 时间：2017年6月1日 下午11:22:00
	 *
	 * @return
	 */
	public List<User<UB>> getUserCaches();
	/**
	 * 说明：移除一个用户		<br>
	 * 时间：2017年6月1日 下午11:22:09
	 *
	 * @param username
	 * @return
	 */
	public User<UB> removeUser(String username);
	/**
	 * 说明：移除当前角色下当所有用户		<br>
	 * 时间：2017年6月1日 下午11:22:16
	 *
	 * @param userRoleKey
	 * @return
	 */
	public List<User<UB>> removeUserByRoleKey(String userRoleKey);
}
